Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Compilations performed with dynamic optimization attempt to improve the operation of software or microcode at runtime. Systems leveraging such dynamic optimization may iteratively execute dynamically compiled code in an attempt to identify optimizations for compilation. For example, procedure calls having high demand may be tracked to focus optimization on those procedure calls. Traditional dynamic optimization systems do not perform more complex optimizations that require understanding of the relative value or cost of improvements made during optimization. Furthermore, code may generally be optimized to a conservative level to ensure functionality of the resultant executable code.
Multicore processors are generally made up of multiple processor cores with interconnections between the individual cores. As core counts within multicore processors increase, making effective use of the multiple cores within a system becomes an important operational consideration. Dynamic optimization compilers on such computers may encounter a vast array of additional optimization variables and those variables may change rapidly even during runtime. Dynamic compilers in multicore systems may also encounter a memory wall when core counts scale up faster than memory. As such, memory might be plentiful when few applications are running, but then memory may quickly become a system performance constraint once an increased number of applications are executing.